package classpath

import (
	"os"
	"strings"
)

const pathListSeparator = string(os.PathListSeparator) // 路径分隔符
// 接口 ，加载类信息的接口
type Entry interface {
	// 读取class文件
	readClass(className string) ([]byte, Entry, error)
	// toString()方法
	String() string
}

// 加载一个类信息
func newEntry(path string) Entry {
	// 是否包含 分隔符
	if strings.Contains(path, pathListSeparator) { // xxx.xxx;xxx.xxx;
		return newCompositeEntry(path) // Entry interface 的 实现类
	}
	if strings.HasSuffix(path, "*") { // xxx.xxx.*  ： 通配符
		return newWildcardEntry(path) // Entry interface 的 实现类
	}
	// xxx.xxx.jar , xxx.xxx.zip
	if strings.HasSuffix(path, ".jar") || strings.HasSuffix(path, ".JAR") ||
		strings.HasSuffix(path, ".zip") || strings.HasSuffix(path, ".ZIP") {
		return newZipEntry(path) // Entry interface 的 实现类
	}
	// xxx.xxx
	return newDirEntry(path) // Entry interface 的 实现类
}
